using System;
using System.Collections.Generic;
using ns26;
using ns27;
using Triton.Game.Mono;

namespace Triton.Game.Mapping
{
	[Attribute38("JsonSerialization")]
	public class JsonSerialization : MonoClass
	{
		public static Dictionary<string, Type> s_typeCache => MonoClass.smethod_7<Class259<Type>>(TritonHs.MainAssemblyPath, "", "JsonSerialization", "s_typeCache")?.method_25();

		public static Dictionary<Type, Type> engineToWrapper => MonoClass.smethod_7<Class255<Type, Type>>(TritonHs.MainAssemblyPath, "", "JsonSerialization", "engineToWrapper")?.method_25();

		public static Dictionary<Type, Type> wrapperToEngine => MonoClass.smethod_7<Class255<Type, Type>>(TritonHs.MainAssemblyPath, "", "JsonSerialization", "wrapperToEngine")?.method_25();

		public JsonSerialization(IntPtr address, string className)
			: base(address, className)
		{
		}

		public JsonSerialization(IntPtr address)
			: this(address, "JsonSerialization")
		{
		}

		public static string SerializeScene()
		{
			return MonoClass.smethod_12(TritonHs.MainAssemblyPath, "", "JsonSerialization", "SerializeScene");
		}

		public static string SerializeComponent(Component component)
		{
			return MonoClass.smethod_12(TritonHs.MainAssemblyPath, "", "JsonSerialization", "SerializeComponent", component);
		}

		public static string SerializedTypeName(Component component)
		{
			return MonoClass.smethod_12(TritonHs.MainAssemblyPath, "", "JsonSerialization", "SerializedTypeName", component);
		}

		public static Component DeserializeComponent(GameObject gameObject, string serializedTypeString, string serializedComponent)
		{
			return MonoClass.smethod_15<Component>(TritonHs.MainAssemblyPath, "", "JsonSerialization", "DeserializeComponent", new object[3] { gameObject, serializedTypeString, serializedComponent });
		}
	}
}
